package com.baselib.android.utils;

import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import java.lang.reflect.Field;

/**
 * Created by Administrator on 2017/7/10 0010.
 */

public class DisplayUtil {

    /**
     * 将px值转换为dip或dp值，保证尺寸大小不变
     *
     * @param pxValue
     * @param pxValue （DisplayMetrics类中属性density）
     * @return
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 将dip或dp值转换为px值，保证尺寸大小不变
     *
     * @param dipValue
     * @param dipValue （DisplayMetrics类中属性density）
     * @return
     */
    public static int dip2px(Context context, float dipValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     *
     * @param pxValue
     * @param pxValue （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    public static int px2sp(Context context, float pxValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spValue
     * @param spValue （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    public static int screenW(Context context) {
        Resources resources = context.getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        int width = dm.widthPixels;
        return width;
    }

    public static int screenH(Context context) {
        Resources resources = context.getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        int height = dm.heightPixels;
        return height;
    }

    public static int[] getWhFromUrl(String url) {
        try {
            int[] whArr = new int[2];
            String[] ar = url.split("\\/");
            String dex = ar[ar.length - 1];
            String[] points = dex.split("\\.");
            String wh = points[points.length - 2];
            String[] whArray = wh.split("x");
            int w = Integer.parseInt(whArray[0]);
            int h = Integer.parseInt(whArray[1]);
            whArr[0] = w;
            whArr[1] = h;
            return whArr;
        } catch (Exception e) {
            return null;
        }
    }

//    public static  void loadImage(final Context context, final ImageView imageView, final String smallImg, final String originImg){
//        if (StringUtils.isBlank(originImg)){
//            return;
//        }
//        ViewGroup.LayoutParams lp = imageView.getLayoutParams();
//        if (!originImg.startsWith("http")){
//            try {
//                lp.height = screenH(context);
//                imageView.setLayoutParams(lp);
//                ImageLoader.getInstance(context).loadLocalImage(originImg,imageView);
//
//            }catch (Exception e){
//                ImageLoader.getInstance(context).loadLocalImage(originImg,imageView);
//            }
//            return;
//        }
//        imageView.setImageResource(R.drawable.default_image);
//        boolean setParam=false;
//        try {
//            int[] whArray = DisplayUtil.getWhFromUrl(originImg);
//            float how = (float) whArray[1] / (float) whArray[0];
//            lp.height = (int)( DisplayUtil.screenW(context)*how);
//            lp.height = DisplayUtil.screenH(context);
//            setParam=true;
//        }catch (Exception e){
//            lp.height = DisplayUtil.screenH(context);
//        }
//
//        if (lp.width>screenW(context)){
//            lp.width = screenW(context);
//        }
//
//        if (lp.height>screenH(context)){
//            lp.height = screenH(context);
//        }
//        imageView.setLayoutParams(lp);
//        //加载小图片
//        final boolean realSet = setParam;
//
//        if (StringUtils.isNotBlank(smallImg)){
//            ImageLoader.getInstance(context).displayImage(smallImg, imageView);
//        }else{
////            setImag(context,originImg,imageView,realSet);
//        }
//        //加载大图
//        ImageLoader.getInstance(context).displayImage(smallImg, imageView);
//    }

//    public static   void setImag(final Context context,final String path,final ImageView imageView,final boolean startDisplay){
//        Logger.e("smallIMG=结束加载1");
//        final RunDialog dialog  = new RunDialog(context);
//        Logger.e("smallIMG=结束加载2");
//        try {
//            // dialog.show();
//
//        }catch (Exception e){
//
//        }
//        Glide.with(context)
//                .load(getUrl(path))
//                .asBitmap()
//                .into(new SimpleTarget<Bitmap>() {
//                    @Override
//                    public void onResourceReady(final Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
//                        Logger.e("smallIMG=结束加载");
//
//
//                        imageView.setOnLongClickListener(new View.OnLongClickListener() {
//                            @Override
//                            public boolean onLongClick(View v) {
//                                SavePicDialogManager.getInstance().setParentAc(context);
//                                SavePicDialogManager.getInstance().setOnClickOkListener(new SavePicDialogManager.OnClickOkListener() {
//                                    @Override
//                                    public void onClickOk() {
//                                        SavePicDialogManager.getInstance().dismiss();
//                                        ImageLoader.getInstance(context).loadimageTophoneOUt(path);
//                                        ToastTool.show("保存成功");
//
//                                    }
//                                });
//                                SavePicDialogManager.getInstance().show();
//                                return false;
//                            }
//                        });
//                        int bw=resource.getWidth();
//                        int bh=resource.getHeight();
//                        int sw = screenW(context);
//                        int sh = screenH(context);
//
//
//
//                        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//                        if (sw*bh>bw*sh){
//                            imageView.setScaleType(ImageView.ScaleType.FIT_START);
//                        }else{
//                            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
//                        }
//                        //imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
//                        Logger.e("加载成功");
//                        imageView.setImageBitmap(resource);
//                    }
//                    @Override
//                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
//                        super.onLoadFailed(e, errorDrawable);
//                        Logger.e("smallIMG=结束失败");
//                        try {
//                            //   dialog.dismiss();
//
//                        }catch (Exception e1){
//
//                        }
//                    }
//                });
//        return;
//    }


    /**
     * 方法1
     * 获取状态栏高度
     * 通过反射的方式获取
     *
     * @param context * @return
     */
    private static int getStateBar2(Context context) {
        Class c = null;
        try {
            c = Class.forName("com.android.internal.R$dimen");
            Object obj = c.newInstance();
            Field field = c.getField("status_bar_height");
            int x = Integer.parseInt(field.get(obj).toString());
            int statusBarHeight = context.getResources().getDimensionPixelSize(x);
            return statusBarHeight;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 方法2
     * 获取状态栏高度
     * 直接获取属性的方式
     *
     * @param context
     * @return
     */
    public static int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = context.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

    public static int getStatusHeight(Context context) {
        if (getStateBar2(context) != 0) {
            return getStateBar2(context);
        }
        return getStatusBarHeight(context);
    }


}
